package com.gxwzxy.medic.service.Impl;

import java.util.List;

import com.gxwzxy.medic.dao.AreaDao;
import com.gxwzxy.medic.dao.Impl.AreaDaoImpl;
import com.gxwzxy.medic.entity.Area;
import com.gxwzxy.medic.service.AreaService;
import com.gxwzxy.medic.until.PageBean;

public class AreaServiceImpl implements AreaService {

	/**
	 * 行政区域分页展示
	 */
	@Override
	public void pageArea(PageBean<Area> pu) {
		AreaDao ad = new AreaDaoImpl();
		//查询数据库表获取记录总数
		int totalCount = ad.findAreaSize();
		//使用记录总数计算PageBean中其他属性：totalPageCount(总页数)，numbers(页数集合)
		pu.setTotalCount(totalCount);
		//调用Dao层获取指定页数的学生数据，并放入PageBean的list属性
		int start = pu.getStartRow();
		int size = pu.getSize();
		List<Area> lu = ad.findAreaIndex(start,size);
		pu.setList(lu);
	}

	/**
	 * 查询所有行政区域
	 */
	@Override
	public List<Area> findAllArea() {
		AreaDao ad = new AreaDaoImpl();
		return ad.findAllArea();
	}

	/**
	 * 新建行政区域
	 */
	@Override
	public boolean addArea(String oldareaCode,String oldgrade,String newareaName) {
		//声明变量
		AreaDao ad = new AreaDaoImpl();
		String areacode = null;//新行政区域编号
		String grade = null;//新行政区域等级
		//先查询所属行政区域的是否存在下级行政区域
		int newgrade = Integer.parseInt(oldgrade)+1;//a先将所属行政区域的等级变为下一等级
		grade = String.valueOf(newgrade);//将int型强转为String型
		areacode = ad.findNextArea(oldareaCode,grade);//获取所属行政区域的下级行政区域的最后一位的areacode，若没有下级行政区域，areacode则为空
		if(areacode!=null) {
			//若areacode不为null,则存在下一级行政区域
			int newareacode = Integer.parseInt(areacode)+1;//a将新的areacode后移一位(数字太大会转型失败，具体如何解决我还没弄懂，只能先用小数值)
			areacode = String.valueOf(newareacode);//再转型
		}else {
			//若areacode为null,则不存在下一级行政区域
			areacode = oldareaCode+"01";//a在所属行政区域后面加01，成为所属行政区域的第一个下级区域
		}
		//再将行新的行政区域保存
		return ad.saveArea(areacode,grade,newareaName);
	}

	/**
	 * 根据areaCode查询行政区域
	 */
	@Override
	public List<Area> findAreaByareaCode(String areaCode) {
		AreaDao ad = new AreaDaoImpl();
		return ad.findAreaByareaCode(areaCode);
	}

	/**
	 * 根据areaCode修改行政区域
	 */
	@Override
	public boolean updateArea(Area a) {
		AreaDao ad = new AreaDaoImpl();
		return ad.updateArea(a);
	}

	/**
	 * 根据areaCode删除行政区域
	 */
	@Override
	public boolean deleteArea(String areaCoed) {
		AreaDao ad = new AreaDaoImpl();
		return ad.deleteArea(areaCoed);
	}

	@Override
	public List<Area> ldArea(Area a) {
		AreaDao ad = new AreaDaoImpl();
		return ad.ldArea(a);
	}

}
